/**
 * @file Medico.java
 * @brief Fichero que contiene la implementacion de la clase Medico.
 * @author Catalina Pelegrin Gonzalez
 * @version 01.00
*/

package GestorUsuarios;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.Date;

import GestorCitas.Cita;
import GestorCitas.CitaDAO;

/**
 * @class Medico
 * @brief Hereda de la clase 'personal clinica'. Representa a los medicos de la clinica.
 */

public class Medico extends PersonalClinica {

	/**
	 * @brief Constructor de la clase: Llama al constructor de PersonalClinica
	 * @param dnipasaporte Documento Nacional de Identidad para el Medico del pais y 
	 *        Pasaporte para los extranjeros.
	 * @param nombre Nombre del Medico.
	 * @param apellidos Apellidos del Medico.
	 * @param fechanacimiento Fecha de nacimiento del Medico.
	 * @param genero Sexualidad del Medico: MASCULINO o FEMENINO.
	 * @param correo Correo electronico (e-mail) del Medico.
	 * @param telefonomovil Numero de contacto movil del Medico.
	 * @param login Nombre de autentificacion que adquiere el Medico para poder acceder al sistema.
	 * @param password Clave de acceso del Medico.
	 * @param estado Situacion en la que se encuentra el Medico con respecto al centro medico:
	 *        ACTIVO, BAJA_TEMPORAL, BAJA_DEFINITIVA
	 * @throws NoSuchAlgorithmException 
	 */
	public Medico(String dnipasaporte, String nombre,
			String apellidos, Date fechanacimiento, GeneroUsuario genero,
			String correo, int telefonomovil, String login, String password,
			EstadoUsuario estado, String observaciones) throws NoSuchAlgorithmException {
		super(dnipasaporte, nombre, apellidos, fechanacimiento, genero,
				correo, telefonomovil, login, password, estado, TipoUsuario.MEDICO,
                                observaciones);
	}
	
	/**
	 * @brief Constructor de la clase: Llama al constructor de PersonalClinica
	 * @param idusuario Identificador numerico del Medico.
	 * @param dnipasaporte Documento Nacional de Identidad para el Medico del pais y 
	 *        Pasaporte para los extranjeros.
	 * @param nombre Nombre del Medico.
	 * @param apellidos Apellidos del Medico.
	 * @param fechanacimiento Fecha de nacimiento del Medico.
	 * @param genero Sexualidad del Medico: MASCULINO o FEMENINO.
	 * @param correo Correo electronico (e-mail) del Medico.
	 * @param telefonomovil Numero de contacto movil del Medico.
	 * @param login Nombre de autentificacion que adquiere el Medico para poder acceder al sistema.
	 * @param password Clave de acceso del Medico.
	 * @param estado Situacion en la que se encuentra el Medico con respecto al centro medico:
	 *        ACTIVO, BAJA_TEMPORAL, BAJA_DEFINITIVA
	 * @throws NoSuchAlgorithmException 
	 */

	public Medico(int idusuario, String dnipasaporte, String nombre,
			String apellidos, Date fechanacimiento, GeneroUsuario genero,
			String correo, int telefonomovil, String login, String password,
			EstadoUsuario estado , String observaciones) throws NoSuchAlgorithmException {
		super(idusuario,dnipasaporte, nombre, apellidos, fechanacimiento, genero,
				correo, telefonomovil, login, password, estado, TipoUsuario.MEDICO,
                                observaciones);
		
	}
	
	/**
	 * @brief Obtiene sus citas entre las fechas indicadas y con el
	 * estado indicado.
	 * @param fecha1
	 * @param fecha2
	 * @param estado EstadoCita 
	 * @return Vector de Citas
	 * @throws ClassNotFoundException 
	 * @throws IOException 
	 * @throws SQLException 
	 */

	public Cita [] getCitas(Date fecha1, Date fecha2) throws SQLException, IOException, ClassNotFoundException{
		return CitaDAO.get(fecha1,fecha2, null, null, this.getIdUsuario(), null);
	}
	
	
	/**
	 * @brief Obtiene el rol del medico.
	 * @return Rol
	 * @throws ClassNotFoundException 
	 * @throws IOException 
	 * @throws SQLException 
	 * @throws NoSuchAlgorithmException 
	 */
	public Rol getRol() throws NoSuchAlgorithmException, SQLException, IOException, ClassNotFoundException{
		return RolDAO.getRol(getIdUsuario());
	}
	
	/**
	 * @brief Establece el rol del medico.
	 * @param idRol id del rol
	 * @throws ClassNotFoundException 
	 * @throws IOException 
	 * @throws SQLException 
	 * @throws NoSuchAlgorithmException 
	 */
	public void setRol(int idRol) throws NoSuchAlgorithmException, SQLException, IOException, ClassNotFoundException{
		RolDAO.setRol(getIdUsuario(),RolDAO.get(idRol).getNombre());
	}
	
	public void deleteRol() throws NoSuchAlgorithmException, SQLException, IOException, ClassNotFoundException {
		RolDAO.deleteRolUsuario(this.getIdUsuario());
	}

}